﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Basicas;
using ProjetoJornada_Negocios.Fachada;
using Basicas.Utils.excecoes;
using Basicas.Utils;

namespace ProjetoJornada.Interno
{
    public partial class Turma_Editar : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string queryString = Request.QueryString["id"];
            int id = Convert.ToInt32(queryString);

            if (!IsPostBack)
            {
                Turma turma = Fachada.Instance.ConsultarTurmaPorId(id);
                this.txtDataFinal.Text = turma.DataFinal.ToString("dd/MM/yyyy");
                this.txtDataInicial.Text = turma.DataInicial.ToString("dd/MM/yyyy");
                this.txtHorario.Text = turma.Horarios;
                this.txtLocal.Text = turma.Local;
                this.txtQntVagas.Text = turma.QtdeVagas.ToString();
                this.txtValor.Text = turma.PrecoAtual.ToString();
                List<Instrutor_Monitor> instrutores = Fachada.Instance.GetTodosInstrutorMonitor();

                ListItem itemInicial = new ListItem();
                this.ddlMonitor.Items.Add(itemInicial);
                this.ddlInstrutor.Items.Add(itemInicial);

                foreach (Instrutor_Monitor instrutorMonitor in instrutores)
                {
                    ListItem item = new ListItem(instrutorMonitor.Nome, instrutorMonitor.Cpf);
                    
                    if (instrutorMonitor.EhInstrutor)
                    {
                        this.ddlInstrutor.Items.Add(item);
                    }
                    else
                    {
                        this.ddlMonitor.Items.Add(item);
                    }
                }

                List<Curso> cursos = Fachada.Instance.ConsultarTodosCursos();
                foreach (Curso curso in cursos)
                {
                    ListItem item = new ListItem(curso.Nome, curso.Id.ToString());
                    this.ddlCurso.Items.Add(item);
                }

                if (turma.Instrutores != null && turma.Instrutores.Count > 0)
                {
                    ListItem instrutor = this.ddlInstrutor.Items.FindByValue(turma.Instrutores[0].Cpf);
                    int indice = this.ddlInstrutor.Items.IndexOf(instrutor);
                    this.ddlInstrutor.SelectedIndex = indice;
                }

                if (turma.Monitores != null && turma.Monitores.Count > 0)
                {
                    ListItem monitor = this.ddlMonitor.Items.FindByValue(turma.Monitores[0].Cpf);
                    int indice = this.ddlMonitor.Items.IndexOf(monitor);
                    this.ddlMonitor.SelectedIndex = indice;
                }

                ListItem cursoSelecionado = this.ddlCurso.Items.FindByText(turma.Curso.Nome);
                int indiceCurso = this.ddlCurso.Items.IndexOf(cursoSelecionado);
                this.ddlCurso.SelectedIndex = indiceCurso;

                ViewState["Turma"] = turma;
            }
        }

        protected void ibtnEditar_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                Turma turma = ViewState["Turma"] as Turma;

                DateTime dataInicial = new DateTime();
                DateTime.TryParse(this.txtDataInicial.Text, out dataInicial);
                DateTime dataFinal = new DateTime();
                DateTime.TryParse(this.txtDataFinal.Text, out dataFinal);
                turma.DataInicial = dataInicial;
                turma.DataFinal = dataFinal;

                turma.Horarios = this.txtHorario.Text;
                turma.Local = this.txtLocal.Text;

                double preco = 0;
                Double.TryParse(this.txtValor.Text, out preco);
                turma.PrecoAtual = preco;

                int vagas = 0;
                int.TryParse(this.txtQntVagas.Text, out vagas);
                turma.QtdeVagas = vagas;

                Curso curso = new Curso();
                curso.Id = Convert.ToInt32(this.ddlCurso.SelectedValue);
                curso.Nome = this.ddlCurso.SelectedItem.Text;
                turma.Curso = curso;

                List<Instrutor_Monitor> instrutores = new List<Instrutor_Monitor>();

                if (this.ddlInstrutor.SelectedIndex != 0)
                {
                    Instrutor_Monitor instrutor = new Instrutor_Monitor();
                    instrutor.Cpf = this.ddlInstrutor.SelectedValue;
                    instrutores.Add(instrutor);
                    turma.Instrutores = instrutores;
                }

                List<Instrutor_Monitor> monitores = new List<Instrutor_Monitor>();

                if (this.ddlMonitor.SelectedIndex != 0)
                {
                    Instrutor_Monitor monitor = new Instrutor_Monitor();
                    monitor.Cpf = this.ddlMonitor.SelectedValue;
                    monitores.Add(monitor);
                    turma.Monitores = monitores;
                }

                Fachada.Instance.EditarTurma(turma);

                Response.Redirect("Turma_Listar.aspx");
            }
            catch (PeriodoInvalidoException)
            {
                this.lblMensagemErro.Text = MensagensPadrao.ERRO_PERIODO_INVALIDO;
            }
        }
    }
}
